Desktop, mobile and public computing devices can be broadly categorized as either telephone-like or computer-like. Telephone-like devices are characterized by their 12-button keyboard optimized for numeric input. Computer-like devices are characterized by their keyboard based on that of a classic typewriter/desktop computer, for purposes of this document referred to as a QWERTY keyboard, other key layouts and layouts for other languages are collectively included in this generic use of QWERTY. Very recently tablet computers have entered the market, however these devices fall into the computer-like category since they all employ on-screen QWERTY keyboard input for text entry.
Both telephone-like and computer-like devices share a common internal architecture; key presses are detected and subsequently internal “key press” events are generated including a code representative of the key that was pressed. Some architectures detect and report key presses and key releases as separate events. Said key press events are conveyed to a keyboard processor software function that, though a lookup table commonly know as a “keyboard map”, converts each key press event to either a character or control code such as enter, tab, cursor movement etc. which is ultimately sent to the application software. Many languages follow a one-key-per-character model while other more complex languages require additional processing to achieve script input.
As is known in the art, said keyboard processor and keyboard map are part of the computing device's software. In applications where the physical keyboard device is external to the computing device, keyboard events are conveyed from said external keyboard to said computing device wherein said keyboard processor converts key press events to characters and control codes, as is known in the art.
The introduction of touch-screen technology has not changed things much, since the physical keyboard/pad has simply been replaced by an on-screen keyboard/pad. The software architecture remains the same with key press events passing from the on-screen keyboard driver to the same keyboard processor.
Computers, and the current software architectures, were initially developed in industrialized countries that predominantly used roman-based scripts, all easily supported by the QWERTY keyboard. Other regions using non-roman scripts adapted the QWERTY keyboard hardware to support text entry with increasing complexity and decreasing usability. The current state of the art is such that keyboard layouts and input methodologies for many non-roman scripts are quite inefficient and cumbersome, requiring multiple keystrokes on a full QWERTY keyboard to enter a single character, with a significant number of scripts that are not supported at all.
Mobile devices are optimized for size and power consumption, and as a trade-off their operating systems are usually optimized for small size. The current state of the art for script input on mobile devices follows one of two approaches. Low cost devices including most telephone-like devices typically support one language and one script input method. The language and script input method in some devices may be selected from a limited set by the user, or is set by the factory and may be changed only by downloading new firmware into the device. Higher cost devices, including most computer-like devices, are almost universally based on an operating system with support for multiple languages and multiple input methods. These operating systems have a great deal in common with, and several are derived from, desktop operating systems. All have a high level of integration between the input method and core operating system, which has the disadvantage of inhibiting input of scripts for which there is no input method for that particular operating system. Input methods exist for scripts required for currently served markets, however, the need to develop and integrate input methods for new scripts, for each platform, is a significant barrier to entry of new markets. Furthermore, switching input methods is achieved with varying difficulty, in all cases making it inefficient to change languages “on-the-fly”. Each operating system implements a different means to select language and input method, making it impossible for a user to have any expectation of transferring input skill from one device type to another.